package proto

type FakerInfo struct {
	FakerId          string `json:"faker_id"`
	FakerVer         int    `json:"faker_ver"`
	FakerTime        int64  `json:"faker_time"`
	FakerRateLimit   int64  `json:"faker_rate_limit"`
	FakerV6Reachable int    `json:"faker_v6_reachable"`
	FakerIp          string `json:"faker_ip"`
}

type FakerBandwidthInfo struct {
	Bandwidth int64 `json:"bandwidth"`
}

type FakerRunTimeInfo struct {
	SrvLastTime int64  `json:"srv_last_time"`
	EndTime     int64  `json:"end_time"`
	DebugInfo   string `json:"di"`
}

type FakerInfoReq struct {
	FakerInfo
}

type FakerLoginReq struct {
	FakerInfo
	FakerBandwidthInfo
}

type FakerAliveReq struct {
	FakerInfo
	FakerBandwidthInfo
	FakerRunTimeInfo
}

type FakerInfoResp struct {
	Timestamp     int64  `json:"ts"`
	LoginUrl      string `json:"lu"`
	AliveUrl      string `json:"au"`
	SpeedUrl      string `json:"su"`
	SpeedDuration int    `json:"sd"`
}

type FakerLoginResp struct {
	Timestamp     int64    `json:"ts"`
	FakerInterval int64    `json:"fi"`
	BlockCount    int64    `json:"bc"`
	UdpRateLimit  int64    `json:"url"`
	RateDelta     int64    `json:"rd"`
	PerUseCount   int      `json:"puc"`
	UdpAddresses  []string `json:"uas"`
}

type FakerAliveResp struct {
	Timestamp      int64 `json:"ts"`
	NeedUpdateRate int   `json:"nur"`
	UdpRateLimit   int64 `json:"url"`
	PerUseCount    int   `json:"puc"`
}
